#include "cpu/exec/template-start.h"
 
#define instr push
 
//通过do_execute实现do_push的通用实现定义
static void do_execute(){
    cpu.esp -= 4;  //栈顶地址减4来存放数据
    swaddr_write(cpu.esp, 4, op_src->val);  //写入目标数据
    print_asm_template1();
}
 
//处理寄存器和内存里面的数据
//使用make_instr_helper已经实现好的译码来简化定义
#if DATA_BYTE == 2 || DATA_BYTE == 4
make_instr_helper(r)
make_instr_helper(rm)
#endif
 
//处理立即数的数据（source immediate）
#if DATA_BYTE == 1 || DATA_BYTE == 4
make_instr_helper(si)
#endif
 
#include "cpu/exec/template-end.h"